home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Source / GNU / cctools / as / hppa-aux.h < prev    next >
C/C++ Source or Header  |  1993-10-20  |  3KB  |  124 lines

  1. /* hppa-aux.h -- Assembler for the PA - PA-RISC specific support routines
  2.    Copyright (C) 1989 Free Software Foundation, Inc.
  3.  
  4. This file is part of GAS, the GNU Assembler.
  5.  
  6. GAS is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GAS is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GAS; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /*
  21.    HP PA-RISC support was contributed by the Center for Software Science
  22.    at the University of Utah.
  23.  */
  24.  
  25. /* HP-PA support for Mach-O    ... USV */
  26.  
  27. #ifndef HPPA_AUX_DEFINED
  28. #define HPPA_AUX_DEFINED
  29.  
  30. typedef enum FPOF { SGL, DBL, ILLEGAL_FMT, QUAD } FP_Operand_Format;
  31.  
  32. int pa_parse_number();
  33.  
  34. int pa_parse_fp_cmp_cond();
  35.  
  36. FP_Operand_Format pa_parse_fp_format();
  37.  
  38. int pa_parse_nullif();
  39.  
  40. int pa_parse_nonneg_cmpsub_cmpltr();
  41.  
  42. int pa_parse_neg_cmpsub_cmpltr();
  43.  
  44. int pa_parse_nonneg_add_cmpltr();
  45.  
  46. int pa_parse_neg_add_cmpltr();
  47.  
  48. /* A structure used during assembly of individual instructions */
  49.  
  50. struct pa_it {
  51.     char    *error;
  52.     unsigned long opcode;
  53. #ifdef undef
  54.     symbol_dictS *nlistp;      /*** used to be:    struct nlist *nlistp; */
  55. #else
  56.     struct nlist *nlistp;
  57. #endif
  58.     expressionS exp;
  59.     int pcrel;
  60.     int pcrel_reloc;
  61.     FP_Operand_Format fpof1;   /* Floating Point Operand Format, operand 1 */
  62.     FP_Operand_Format fpof2;   /* Floating Point Operand Format, operand 2 */
  63.                                /* (used only for class 1 instructions --   */
  64.                    /* the conversion instructions)             */
  65.     long field_selector;
  66.     unsigned int reloc;
  67. /*    enum reloc_type_hppa reloc; */
  68.     int code;
  69.     long arg_reloc;
  70. };
  71.  
  72. extern struct pa_it the_insn;
  73.   
  74. /*
  75.   PA-89 floating point registers are arranged like this:
  76.  
  77.  
  78.   +--------------+--------------+
  79.   |   0 or 16L   |  16 or 16R   |
  80.   +--------------+--------------+
  81.   |   1 or 17L   |  17 or 17R   |
  82.   +--------------+--------------+
  83.   |              |              |
  84.  
  85.   .              .              .
  86.   .              .              .
  87.   .              .              .
  88.  
  89.   |              |              |
  90.   +--------------+--------------+
  91.   |  14 or 30L   |  30 or 30R   |
  92.   +--------------+--------------+
  93.   |  15 or 31L   |  31 or 31R   |
  94.   +--------------+--------------+
  95.  
  96.  
  97.   The following is a version of pa_parse_number that
  98.   handles the L/R notation and returns the correct
  99.   value to put into the instruction register field.
  100.   The correct value to put into the instruction is
  101.   encoded in the structure 'pa_89_fp_reg_struct'.
  102.  
  103.  */
  104.  
  105. struct pa_89_fp_reg_struct {
  106.   char number_part;
  107.   char L_R_select;
  108. };
  109.  
  110. int need_89_opcode();
  111. int pa_89_parse_number();
  112.  
  113. extern int getAbsoluteExpression(
  114.     char *str);
  115. extern int evaluateAbsolute(
  116.     expressionS exp,
  117.     int field_selector);
  118. extern int getExpression(
  119.     char *str);
  120.  
  121. #endif /* HPPA_AUX_DEFINED */
  122.  
  123. /* end hppa-aux.h */
  124.